package model

import "github.com/starmotioncf/soutchatinternal/constant"

// GoldType 金币变动类型配置表结构体
type GoldType struct {
	Typ                       uint32                `gorm:"column:typ;primaryKey" json:"typ"`                                        // 变动类型
	Name                      string                `gorm:"column:name;size:100" json:"name"`                                        // 名称
	Cate                      uint8                 `gorm:"column:cate" json:"cate"`                                                 // 1金币，2钻石，3美刀
	Mode                      constant.WalletAction `gorm:"column:mode" json:"mode"`                                                 // 1增加2减少
	DailyWarningThreshold     int64                 `gorm:"column:daily_warning_threshold" json:"daily_warning_threshold"`           // 日预警值，为0不预警，达到这个值时将报警
	UserDailyWarningThreshold int64                 `gorm:"column:user_daily_warning_threshold" json:"user_daily_warning_threshold"` // 用户日预警值，为0不预警，达到这个值时将报警
	RecordMsg                 string                `gorm:"column:record_msg;size:500" json:"record_msg"`                            // 客户端显示的记录消息,多语言i18n
	Status                    uint8                 `gorm:"column:status" json:"status"`                                             // 1启用2禁用，慎重，禁用将关闭某个rtype的金币操作
	Remark                    string                `gorm:"column:remark;size:255" json:"remark"`                                    // 说明
	Sort                      int32                 `gorm:"column:sort" json:"sort"`                                                 // 小到大
	CreateBy                  uint64                `gorm:"column:create_by" json:"create_by"`                                       // 创建人
	UpdateBy                  uint64                `gorm:"column:update_by" json:"update_by"`                                       // 更新人
	CreatedAt                 int64                 `gorm:"column:created_at" json:"created_at"`                                     // 创建时间
	UpdatedAt                 int64                 `gorm:"column:updated_at" json:"updated_at"`                                     // 更新时间
}

// TableName 指定表名
func (g GoldType) TableName() string {
	return "gold_type"
}

// GoldRecord 金币变动流水记录表结构体
type GoldRecord struct {
	ID            uint64 `gorm:"column:id;primaryKey;autoIncrement" json:"id"`  // 主键编码
	UID           uint64 `gorm:"column:uid" json:"uid"`                         // 用户uid
	Number        int64  `gorm:"column:number" json:"number"`                   // 变动金额,加为正减为负
	Typ           uint32 `gorm:"column:typ" json:"typ"`                         // 见gold_type表
	Balance       int64  `gorm:"column:balance" json:"balance"`                 // 交易后余额
	Extend        string `gorm:"column:extend;size:500" json:"extend"`          // 扩展字段
	CreatedAtHour uint64 `gorm:"column:created_at_hour" json:"created_at_hour"` // 时间戳小时
	CreatedAt     uint64 `gorm:"column:created_at" json:"created_at"`           // 时间戳
}

// TableName 指定表名
func (GoldRecord) TableName() string {
	return "gold_record"
}

// GoldRecord 金币变动流水记录表结构体
type DiamondRecord struct {
	ID            uint64 `gorm:"column:id;primaryKey;autoIncrement" json:"id"`  // 主键编码
	UID           uint64 `gorm:"column:uid" json:"uid"`                         // 用户uid
	Number        int64  `gorm:"column:number" json:"number"`                   // 变动金额,加为正减为负
	Typ           uint32 `gorm:"column:typ" json:"typ"`                         // 见gold_type表
	Balance       int64  `gorm:"column:balance" json:"balance"`                 // 交易后余额
	Extend        string `gorm:"column:extend;size:500" json:"extend"`          // 扩展字段
	CreatedAtHour uint64 `gorm:"column:created_at_hour" json:"created_at_hour"` // 时间戳小时
	CreatedAt     uint64 `gorm:"column:created_at" json:"created_at"`           // 时间戳
}

// TableName 指定表名
func (DiamondRecord) TableName() string {
	return "diamond_record"
}
